﻿using GDM.Hogar.Aplicacion.Properties;
using GDM.Hogar.Managers.Contratos;
using System;
using System.Windows.Forms;

namespace GDM.Hogar.Aplicacion.Formularios.Seguridad
{
    public partial class FrmCambiarContraseña
#if DEBUG
 : AdaptadorFrm
#else
     : FrmBase
#endif
    {
        private readonly IUsuarioManager _usuarioManager;

        public FrmCambiarContraseña(IUsuarioManager usuarioManager)
        {
            if (usuarioManager == null)
                throw new ArgumentNullException("usuarioManager");

            _usuarioManager = usuarioManager;
            InitializeComponent();
        }

        protected override string Titulo
        {
            get
            {
                return "Cambiar Contraseña";
            }
        }

        private void CambiarContraseña()
        {
            if (!contraseñaValidator.Validate()) return;

            if (txtContraseñaNueva.Text.Trim().ToLower().Equals(txtContraseñaActual.Text.Trim().ToLower()))
            {
                MostrarMensajeError(Resources.Contraseñas_Iguales);
                return;
            }
            try
            {
                if (_usuarioManager.ValidarUsuario(ContextoUsuario.NombreUsuario, txtContraseñaActual.Text.Trim()))
                {
                    _usuarioManager.CambiarContraseña(ContextoUsuario.UsuarioId, txtContraseñaNueva.Text.Trim());
                    MostrarMensajeExito(Resources.Contraseña_CambioConExito);
                }
                else
                {
                    MostrarMensajeError(Resources.ContraseñaActual_Invalida);
                    return;
                }
            }
            catch (Exception ex)
            {
                MostrarMensajeError(Resources.Contraseña_Invalida);
            }
        }

        private void FrmCambiarContraseña_Load(object sender, EventArgs e)
        {
            txtContraseñaActual.Focus();
        }

        private void txtContraseñaActual_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == (char)13)
            {
                CambiarContraseña();
            }
        }

        private void txtContraseñaNueva_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == (char)13)
            {
                CambiarContraseña();
            }
        }

        private void btnCambiarContraseña_Click(object sender, EventArgs e)
        {
            CambiarContraseña();
        }
    }
}